[Amazon FSx for NetApp ONTAP] SnapLockによるWORMを試してみた
書き込みして一定時間経過したファイルは編集できないようにしたい
こんにちは、のんピ(@non____97)です。
皆さんは書き込みして一定時間経過したファイルは編集できないようにしたいなと思ったことはありますか? 私はあります。
ファイルをロックすることで、データの改ざんや誤削除を防ぐことが可能です。また、コンプライアンス要件として一定期間データの保持が義務付けられている場合にも役立つでしょう。
Amazon FSx for NetApp ONTAPではSnapLockというWORM(Write Once Read Many)の機能があります。
SnapLockを活用することで、上述の要件を満たすことが可能です。
以降SnapLockの説明をします。
いきなりまとめ
- SnapLockとはONTAPが提供するWORM機能
- 保持期間が経過するまで基本的に削除はできない
- 例外としてEnterpriseモードで特権削除を使用できる場合は削除できる
- SnapMirrorの転送先でのみSnapLockを有効化して運用するのが現実的か
- この時、SnapMirror policyは
vault
である必要がある
- この時、SnapMirror policyは
SnapLockとは
概要
SnapLockとは、ONTAPが提供するWORM機能です。
WORMとは、一度書き込んだデータを読み出せるが変更をさせない方式です。SnapLock以外のWORM機能は、AWSだとS3のオブジェクトロックやAWS Backupのボールトロックなどがあります。
SnapLockにおいては、ボリュームに書き込んだファイルを改ざんや削除から保護します。
サポートプロトコルはNFSとSMBです。iSCSI LUNは原則サポートしていないので注意しましょう。
SnapLock では、CIFSやNFSなどの標準オープンファイルプロトコルを使用して、ファイルレベルでこのようなデータ保持を実行できます。SnapLock でサポートされるオープンファイルプロトコルは、NFS(バージョン2、3、4)とCIFS(SMB 1.0、2.0、および3.0)です。 . . (中略) . . SnapLockでは、SnapLock以外のボリュームで作成されたSnapshotコピーをSnapLockバックアップ関係の一部として保護するためにSnapLockに転送する場合にのみ、LUNがサポートされます。読み取り/書き込みSnapLockボリュームではLUNはサポートされません。ただし、Snapshotコピーの改ざんは、SnapMirrorのソースボリュームと、LUNを含むデスティネーションボリュームの両方でサポートされます。
また、SnapLockはボリューム単位で設定します。一度SnapLockを有効にしたボリュームはSnapLockの概要は以下ドキュメントにもまとまっています。
WORM状態の遷移
SnapLockを有効にしたボリューム上のファイルはその瞬間から永久に削除できないという訳ではありません。WORM状態前のファイルは編集、削除は可能ですし、WORM状態になってから指定された保持期間を経過したファイルを削除することが可能です。
WORM状態にするためには以下の3つの方法があります。
- NFSやSMBのファイル属性操作
- SnapLockの自動コミット機能により、指定した期間書き込みがない場合
- ボリュームアペンドモード(VAM)を有効にした場合
順番に説明します。
「1. NFSやSMBのファイル属性操作」とは、ファイルを読み取り専用にする操作です。
具体的には以下のように書き込み権限を奪えば、対象ファイルはWORM状態になります。
$ chmod -w document.txt
$ attrib +r document.txt
WORMにコミットされたファイルはatimeが保持時刻に設定されます。
$ ls -l /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB* -rw-r--r--. 1 root root 1073741824 Apr 16 09:51 /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 1073741824 Apr 16 09:51 /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB_2 # WORMコミット前の atime の確認 $ stat /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB* File: /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB Size: 1073741824 Blocks: 2105424 IO Block: 65536 regular file Device: 33h/51d Inode: 98 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:nfs_t:s0 Access: 2024-04-16 09:51:34.944474000 +0000 Modify: 2024-04-16 09:51:41.284633000 +0000 Change: 2024-04-16 09:51:41.284633000 +0000 Birth: - File: /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB_2 Size: 1073741824 Blocks: 2105424 IO Block: 65536 regular file Device: 33h/51d Inode: 99 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:nfs_t:s0 Access: 2024-04-16 09:51:52.052487000 +0000 Modify: 2024-04-16 09:51:58.352767000 +0000 Change: 2024-04-16 09:51:58.352767000 +0000 Birth: - # WORMコミット $ sudo chmod -w /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB* # WORMコミット後の atime の確認 $ stat /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB* File: /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB Size: 1073741824 Blocks: 2105424 IO Block: 65536 regular file Device: 33h/51d Inode: 98 Links: 1 Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:nfs_t:s0 Access: 2024-04-16 09:55:34.000000000 +0000 Modify: 2024-04-16 09:51:41.284633000 +0000 Change: 2024-04-16 09:53:34.000000000 +0000 Birth: - File: /mnt/fsxn/vol_snaplock2/random_pattern_binary_block_1GiB_2 Size: 1073741824 Blocks: 2105424 IO Block: 65536 regular file Device: 33h/51d Inode: 99 Links: 1 Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:nfs_t:s0 Access: 2024-04-16 09:55:34.000000000 +0000 Modify: 2024-04-16 09:51:58.352767000 +0000 Change: 2024-04-16 09:53:34.000000000 +0000 Birth: - # 現在の時刻 + デフォルト保持期間2分が atime として設定される $ date Tue Apr 16 09:53:44 UTC 2024
毎度毎度、手動でファイルを読み取り専用にするのは面倒ですよね。そんな時には「2. SnapLockの自動コミット機能により、指定した期間書き込みがない場合」です。
自動コミット期間中にファイルの変更がなかった場合、SnapLockボリューム上でファイルがWORM状態にコミットされます。自動コミットの期間は、5 分から 10 年の間で指定できます。
最後に「3. ボリュームアペンドモード(VAM)を有効にした場合」です。
WORMで保護されたファイルにある既存のデータは変更できません。ただし、VAMを有効にしたボリュームについては、作成されたファイルは追記可能だが、既存データの編集はできない状態にすることが可能です。手動コミットをすることで以降の書き込みを防ぐことも可能です。
保持期間の計算
各ファイルの保持期間の計算は、ベースとなるComplianceClockと、ファイルごとに設定された保持期間またはSnapLockのデフォルト保持期間によって行われます。
ComplianceClockとはSnapLock専用の時刻です。
ComplianceClockは管理者が1回だけ初期化でき、その後はONTAP内部で時刻計算をします。初期化後は管理者は時刻を進める操作はできなくなります。これにより、WORMファイルの保持期間の短縮を防ぐことが可能です。
また、WORMの保持期間が経過してもファイルに追記することはできません。削除するか、再度保持期間を指定してWORMコミットするかの2択です。
期限の切れた保持期間
WORM ファイルの保持期間が終了すると、ファイルを削除するか、新しい保持期間を設定して WORM 保護を再度有効にすることができます。WORM ファイルは、保持期間の終了後は、自動的に削除されることはありません。保持期間が終了しても、引き続き、WORM ファイルの内容を変更することはできません。
保持期間の関係性はStorage-JAWS#1の以下資料が非常に分かりやすいです。
抜粋 : Storage-JAWS #1
2種類のリテンションモード
SnapLockにはComplianceモードとEnterpriseモードという2種類のリテンションモードがあります。各リテンションモードの説明と相違点は以下のとおりです。
SnapLock 機能 | SnapLock Compliance | SnapLock Enterprise |
---|---|---|
説明 | Compliance ボリューム上の WORM に移行したファイルは、保持期間が終了するまで削除することはできません。 | Enterprise ボリューム上の WORM に移行したファイルは、権限を持つユーザーが特権削除を使用すると、保持期間の終了前に削除することができます。 |
ユースケース | 政府または業界に固有の指令 (SEC 規則 17a-4 (f)、FINRA 規則 4511、CFTC 規制 1.31 など) に対応するため。
ランサムウェア攻撃から防御するため。 |
組織内のデータ整合性と内部コンプライアンスを強化するため。
SnapLock Compliance を使用する前に保持設定をテストするため。 |
自動コミット | はい | はい |
イベントベースの保持 (EBR)* | はい | はい |
リーガルホールド* | はい | いいえ |
特権削除 | いいえ | はい |
ボリューム付加モード | はい | はい |
SnapLock 監査ログボリューム | はい | はい |
抜粋 : SnapLock の働き - FSx for ONTAP
大まかに以下のような使い分けをすると良いと思います。
- Complianceモード
- 要件に対して厳格に対応する必要がある
- いずれの管理者も信用しない
- ファイルの改ざん、削除を確実に防ぎたい
- Enterpriseモード
- 組織内のポリシーを準拠する必要がある
- 管理者は信用できる
- FSxNの移行時など、必要に応じてボリュームを削除できる口が欲しい
上述の表に出てきた以下について以降説明します。
- 特権削除
- リーガルホールド
- イベントベースの保持 (EBR)
- SnapLock監査ログボリューム
特権削除
特権削除は保持期間が経過する前にWORMファイルを削除する機能です。
特権削除を有効化するには、SnapLockボリュームと同じSVMでSnapLock監査ログボリュームを最初に作成する必要があります。
特権削除をした際はSnapLock 監査ログボリュームに記録されます。特権削除で消せはできるけれども、その証跡はしっかり残るということですね。
特権削除の機能を完全に完全に無効化することも可能です。完全に無効にした場合、以降対象ボリュームで特権付き削除を有効にすることはできません。
リーガルホールド
リーガルホールドは保持期間経過後もWORMファイルとして扱うようにする機能です。
保持期間が経過したファイルであっても、リーガルホールドを有効化することで、ファイルの削除を防ぐことができます。
イベントベースの保持 (EBR)
関連する保持期間を含むカスタムポリシーを作成する機能です。
これにより、指定したパス配下のファイルをまとめてWORMにコミットすることが可能です。
SnapLock 監査ログボリューム
SnapLock 監査ログボリュームは、特権削除やリーガルホールドなどの消去できないイベントのレコードの保存先となるボリュームです。
監査ログボリュームは、/snaplock_audit_log
というジャンクションパスにマウントする必要があります。
SnapLock 監査ログボリュームの最小保持期間は6か月です。これはボリュームがEnterpriseモードで作成されたとしても、この保持期間が経過するまで、SnapLock監査ログボリューム、SVM、およびそれに関連するファイルシステムを削除できなくなります。
気軽に作成してしまうと、6ヶ月削除できないFSxNファイルシステムの出来上がりです。注意しましょう。
SnapLock でサポートされる機能とサポートされない機能
SnapLock でサポートされる機能とサポートされない機能は以下のとおりです。
Feature | Supported with SnapLock Compliance | Supported with SnapLock Enterprise |
---|---|---|
Consistency Groups | No | No |
Encrypted volumes | Yes, beginning with ONTAP 9.2. Learn more about Encryption and SnapLock. | Yes, beginning with ONTAP 9.2. Learn more about Encryption and SnapLock. |
FabricPools on SnapLock aggregates | No | Yes, beginning with ONTAP 9.8. Learn more about FabricPool on SnapLock Enterprise aggregates. |
Flash Pool aggregates | Yes, beginning with ONTAP 9.1. | Yes, beginning with ONTAP 9.1. |
FlexClone | You can clone SnapLock volumes, but you cannot clone files on a SnapLock volume. | You can clone SnapLock volumes, but you cannot clone files on a SnapLock volume. |
FlexGroup volumes | Yes, beginning with ONTAP 9.11.1. Learn more about FlexGroup volumes. | Yes, beginning with ONTAP 9.11.1. Learn more about FlexGroup volumes. |
LUNs | No. Learn more about LUN support with SnapLock. | No. Learn more about LUN support with SnapLock. |
MetroCluster configurations | Yes, beginning with ONTAP 9.3. Learn more about MetroCluster support. | Yes, beginning with ONTAP 9.3. Learn more about MetroCluster support. |
Multi-admin verification (MAV) | Yes, beginning with ONTAP 9.13.1. Learn more about MAV support. | Yes, beginning with ONTAP 9.13.1. Learn more about MAV support. |
SAN | No | No |
Single-file SnapRestore | No | Yes |
SnapMirror Business Continuity | No | No |
SnapRestore | No | Yes |
SMTape | No | No |
SnapMirror Synchronous | No | No |
SSDs | Yes, beginning with ONTAP 9.1. | Yes, beginning with ONTAP 9.1. |
Storage efficiency features | Yes, beginning with ONTAP 9.9.1. Learn more about storage efficiency support. | Yes, beginning with ONTAP 9.9.1. Learn more about storage efficiency support. |
抜粋 : What SnapLock is - Supported and unsupported features with SnapLock
FSxNの場合特に注意すべき点は、ComplianceモードだとFabric Poolをサポートしていない点です。
料金
SnapLock ライセンスとして、SnapLockボリュームの物理ストレージサイズに応じて課金が発生します。
東京リージョンのSingle-AZの場合は、0.0244USD/GB
です。
ただし、上限が決まっています。具体的にはリージョンおよびアカウント単位で集計したSnapLockボリュームの最初の 60 TB 分に対してのみ課金が発生します。100TBスケールの環境の場合はコストメリットが出てきそうです。
やってみた
SnapLockの管理ユーザーの作成
実際にやってみましょう。
対象のFSxNファイルシステムのONTAPバージョンは9.13.1P7D3です。
::> set diag Warning: These diagnostic commands are for use by NetApp personnel only. Do you want to continue? {y|n}: y ::*> version NetApp Release 9.13.1P7D3: Wed Feb 14 13:11:46 UTC 2024
SnapLockボリューム作成前にComplianceClockを確認します。
::*> snaplock compliance-clock show Node ComplianceClock Time Node ID ID ----------- ----------------------------------- ---------- ------------- FsxId0203a077973a5b898-01 Mon Apr 15 05:24:47 UTC 2024 +00:00 3323134672 1713157822543 FsxId0203a077973a5b898-02 Mon Apr 15 05:24:47 UTC 2024 +00:00 3323134545 1713157821689 2 entries were displayed. ::*> snaplock compliance-clock show -instance Node: FsxId0203a077973a5b898-01 ComplianceClock Time: Mon Apr 15 05:26:07 UTC 2024 +00:00 Node ID: 3323134672 ID: 1713157822543 ComplianceClock Time (secs): 1713158767 ComplianceClock Skew (secs): 2 Node: FsxId0203a077973a5b898-02 ComplianceClock Time: Mon Apr 15 05:26:07 UTC 2024 +00:00 Node ID: 3323134545 ID: 1713157821689 ComplianceClock Time (secs): 1713158767 ComplianceClock Skew (secs): 2 2 entries were displayed.
既にComplianceClockは初期化されていそうですね。
試しにリーガルホールドの設定を確認してみます。
::*> snaplock legal-hold show Error: show failed: Only a user with the security login role "vsadmin-snaplock" is allowed to perform this operation.
はい、vsadmin-snaplock
のロールが割り当たっていないと確認できないようです。
現在ONTAP CLIを操作しているユーザーにはファイルシステムの管理ロールfsxadmin
が割り当たっています。これでも表示できないとのことです。
指示通り、vsadmin-snaplock
のロールが割り当たているユーザーを作成します。vsadmin-snaplock
は以下AWS公式ドキュメントの通り、特権削除を含む SnapLock オペレーションの実行が可能です。
今回はsnaplock-user
というユーザーを作成します。
::*> security login show Vserver: FsxId0203a077973a5b898 Second User/Group Authentication Acct Authentication Name Application Method Role Name Locked Method -------------- ----------- ------------- ---------------- ------ -------------- autosupport console password autosupport no none fsxadmin http password fsxadmin no none fsxadmin ontapi password fsxadmin no none fsxadmin ssh password fsxadmin no none fsxadmin ssh publickey fsxadmin - none Vserver: svm Second User/Group Authentication Acct Authentication Name Application Method Role Name Locked Method -------------- ----------- ------------- ---------------- ------ -------------- vsadmin http password vsadmin yes none vsadmin ontapi password vsadmin yes none vsadmin ssh password vsadmin yes none 8 entries were displayed. ::*> security login create -vserver svm -user-or-group-name snaplock-user -application ssh -authentication-method password -role vsadmin-snaplock Please enter a password for user 'snaplock-user': Please enter it again: ::*> security login show Vserver: FsxId0203a077973a5b898 Second User/Group Authentication Acct Authentication Name Application Method Role Name Locked Method -------------- ----------- ------------- ---------------- ------ -------------- autosupport console password autosupport no none fsxadmin http password fsxadmin no none fsxadmin ontapi password fsxadmin no none fsxadmin ssh password fsxadmin no none fsxadmin ssh publickey fsxadmin - none Vserver: svm Second User/Group Authentication Acct Authentication Name Application Method Role Name Locked Method -------------- ----------- ------------- ---------------- ------ -------------- snaplock-user ssh password vsadmin-snaplock no none vsadmin http password vsadmin yes none vsadmin ontapi password vsadmin yes none vsadmin ssh password vsadmin yes none 9 entries were displayed.
作成したユーザーでSVMにSSHします。
$ ssh snaplock-user@svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com The authenticity of host 'svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com (10.0.8.35)' can't be established. ED25519 key fingerprint is SHA256:tHz7BDMlAkonbVXcWjOTxF2/Ia1P6nvqaNxa3V11DdI. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com' (ED25519) to the list of known hosts. (snaplock-user@svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com) Password: This is your first recorded login. svm::> set diag Warning: These diagnostic commands are for use by NetApp personnel only. Do you want to continue? {y|n}: y svm::*>
接続できましたね。
先ほど失敗したコマンドを叩いてみます。
svm::*> snaplock legal-hold show This table is currently empty.
正常に実行できました。
SnapLockボリュームの作成
次に、SnapLockボリュームを作成します。
今回はマネジメントコンソールから作成します。
::*> volume create -snaplock-type ? non-snaplock Non SnapLock compliance SnapLock Compliance enterprise SnapLock Enterprise
SnapLock周りの設定をまとめると、以下のとおりです。
- リテンションモード : Enterprise
- 監査ログボリューム : 作成しない
- 最小保持期間 : 1分
- 最大保持期間 : 3分
- デフォルト保持期間 : 2分
- 自動コミット : 無効
- 特権削除 : 無効
- ボリュームアペンドモード : 無効
作成後、ONTAP CLIでボリュームの状態を確認します。
::*> volume efficiency show -volume vol_snaplock -fields state, policy, storage-efficiency-mode, inline-compression, inline-dedupe, compression, data-compaction, auto-adaptive-compression-savings, auto-adaptive-compression-existing-volume, using-auto-adaptive-compression vserver volume state policy compression inline-compression storage-efficiency-mode inline-dedupe data-compaction auto-adaptive-compression-savings using-auto-adaptive-compression auto-adaptive-compression-existing-volume ------- ------------ -------- ------ ----------- ------------------ ----------------------- ------------- --------------- --------------------------------- ------------------------------- ----------------------------------------- svm vol_snaplock Disabled auto false false efficient false false true false false ::*> volume show -volume vol_snaplock -fields available, filesystem-size, total, used, percent-used, performance-tier-inactive-user-data, performance-tier-inactive-user-data-percent, size, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared,logical-used, logical-used-percent,logical-used-by-afs, logical-available, physical-used, physical-used-percent, tiering-policy, snapshot-polic, snaplock-type, snapshot-locking-enabled vserver volume size available filesystem-size total used percent-used snapshot-policy dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared physical-used physical-used-percent snaplock-type logical-used logical-used-percent logical-available logical-used-by-afs tiering-policy performance-tier-inactive-user-data performance-tier-inactive-user-data-percent snapshot-locking-enabled ------- ------------ ----- --------- --------------- ------- ----- ------------ --------------- ------------------ -------------------------- ------------------- ------------- --------------------- ------------- ------------ -------------------- ----------------- ------------------- -------------- ----------------------------------- ------------------------------------------- ------------------------ svm vol_snaplock 128GB 121.6GB 128GB 121.6GB 336KB 0% none 0B 0% 0B 336KB 0% enterprise 336KB 0% - 336KB none 0B 0% false
確かにSnapLockがリテンションモードEnterpriseで設定されています。
ComplianceClockは変わりありませんでした。初期化されることなく、粛々と時刻を刻んでいます。
::*> snaplock compliance-clock show Node ComplianceClock Time Node ID ID ----------- ----------------------------------- ---------- ------------- FsxId0203a077973a5b898-01 Mon Apr 15 05:47:01 UTC 2024 +00:00 3323134672 1713157822543 FsxId0203a077973a5b898-02 Mon Apr 15 05:47:01 UTC 2024 +00:00 3323134545 1713157821689 2 entries were displayed.
また、aggregateがSnapLock aggregateになっていました。
::*> aggr show -fields snaplock-type aggregate snaplock-type --------- ------------- aggr1 enterprise
ONTAP 9.13.1はSnapLockボリュームと非SnapLockボリュームを同じaggregate上に作成できるので、特に気しなくても良いと思います。
ONTAP 9.10.1 よりも前のリリースでは、別の SnapLock アグリゲートを作成する必要があります。ONTAP 9.10.1 以降では、 SnapLock ボリュームと非 SnapLock ボリュームを同じアグリゲート上に配置できるため、 ONTAP 9.10.1 を使用している場合に別の SnapLock アグリゲートを作成する必要がなくなりました。
手動コミット
ファイルを作成して、手動コミットをしてみましょう。
SnapLockボリュームをマウントして、適当なファイルを作成します。
$ sudo mkdir -p /mnt/fsxn/vol_snaplock $ sudo mount -t nfs svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com:/vol_snaplock /mnt/fsxn/vol_snaplock $ df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com:/vol_snaplock nfs4 122G 320K 122G 1% /mnt/fsxn/vol_snaplock $ echo test | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null $ cat /mnt/fsxn/vol_snaplock/test.txt test
コミット前なので追記や削除も可能です。
$ echo test2 | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null $ cat /mnt/fsxn/vol_snaplock/test.txt test test2 $ sudo rm /mnt/fsxn/vol_snaplock/test.txt $ ls -l /mnt/fsxn/vol_snaplock/test.txt ls: cannot access '/mnt/fsxn/vol_snaplock/test.txt': No such file or directory
再度ファイルを作成して、手動コミットします。
$ echo test | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null $ ls -l /mnt/fsxn/vol_snaplock/test.txt -rw-r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt $ sudo chmod -w /mnt/fsxn/vol_snaplock/test.txt $ ls -l /mnt/fsxn/vol_snaplock/test.txt -r--r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt $ sudo chmod +w /mnt/fsxn/vol_snaplock/test.txt chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system
再度書き込み権限を付与しようとすると、拒否されました。
しばらくすると、保持期間を超過したのか書き込み権限を付与できました。
$ sudo chmod +w /mnt/fsxn/vol_snaplock/test.txt $ ls -l /mnt/fsxn/vol_snaplock/test.txt -rw-r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt
再度手動コミットしてみます。
$ sudo chmod -w /mnt/fsxn/vol_snaplock/test.txt $ ls -l /mnt/fsxn/vol_snaplock/test.txt -r--r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt $ sudo chmod +w /mnt/fsxn/vol_snaplock/test.txt $ ls -l /mnt/fsxn/vol_snaplock/test.txt -rw-r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt
時間を空けずに書き込み権限を付与できました。保持期間を指定せずに再手動コミットはできないようです。
保持期間を超過したファイルを変更しようとしてみます。
$ echo test2 | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null tee: /mnt/fsxn/vol_snaplock/test.txt: Read-only file system $ ls -l /mnt/fsxn/vol_snaplock/test.txt -rw-r--r--. 1 root root 5 Apr 15 06:31 /mnt/fsxn/vol_snaplock/test.txt
はい、先述のとおり編集はできません。
削除は問題なくできることを確認します。
$ sudo rm /mnt/fsxn/vol_snaplock/test.txt $ ls -l /mnt/fsxn/vol_snaplock/test.txt ls: cannot access '/mnt/fsxn/vol_snaplock/test.txt': No such file or directory
保持期間の終了タイミングの確認
保持期間の終了タイミングの確認をします。
$ echo test | sudo tee -a /mnt/fsxn/vol_snaplock/test.txt > /dev/null $ ls -l /mnt/fsxn/vol_snaplock/test.txt -rw-r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt $ sudo chmod -w /mnt/fsxn/vol_snaplock/test.txt $ while true; do date sudo chmod +w /mnt/fsxn/vol_snaplock/test.txt result=$? ls -l /mnt/fsxn/vol_snaplock/test.txt if [ $result -eq 0 ]; then break fi sleep 5 done Mon Apr 15 07:36:54 UTC 2024 chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system -r--r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt Mon Apr 15 07:36:59 UTC 2024 chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system -r--r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt . . (中略) . . chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system -r--r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt Mon Apr 15 07:38:52 UTC 2024 chmod: changing permissions of '/mnt/fsxn/vol_snaplock/test.txt': Read-only file system -r--r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt Mon Apr 15 07:38:57 UTC 2024 $ ls -l /mnt/fsxn/vol_snaplock/test.txt -rw-r--r--. 1 root root 5 Apr 15 07:36 /mnt/fsxn/vol_snaplock/test.txt
ちょうど2分ですね。SnapLockで指定したデフォルト保持期間の間変更できなかったことが分かります。
自動コミット
次に自動コミットの動作確認です。
ONTAP CLIから自動コミットを有効化します。自動コミット期間はミニマムの5分です。
svm::*> volume snaplock show -volume vol_snaplock -instance Volume: vol_snaplock SnapLock Type: enterprise Minimum Retention Period: 1 minutes Default Retention Period: 2 minutes Maximum Retention Period: 3 minutes Autocommit Period: none Is Volume Append Mode Enabled: false Privileged Delete: - Expiry Time: Mon Apr 15 07:38:53 GMT 2024 ComplianceClock Time: Mon Apr 15 08:01:17 UTC 2024 +00:00 ComplianceClock ID: 1713157822543 ComplianceClock NodeID: 3323134672 ComplianceClock Skew (secs): 0 Litigation Count: 0 Is SnapLock Audit Log Volume: false Unspecified Retention File Count: 0 svm::*> volume snaplock modify -volume vol_snaplock -autocommit-period "5 minutes" svm::*> volume snaplock show -volume vol_snaplock -instance Volume: vol_snaplock SnapLock Type: enterprise Minimum Retention Period: 1 minutes Default Retention Period: 2 minutes Maximum Retention Period: 3 minutes Autocommit Period: 5 minutes Is Volume Append Mode Enabled: false Privileged Delete: - Expiry Time: Mon Apr 15 07:38:53 GMT 2024 ComplianceClock Time: Mon Apr 15 08:08:33 UTC 2024 +00:00 ComplianceClock ID: 1713157822543 ComplianceClock NodeID: 3323134672 ComplianceClock Skew (secs): 0 Litigation Count: 0 Is SnapLock Audit Log Volume: false Unspecified Retention
自動コミットを有効化後、自動コミット期間内に定期的に書き込んでいる間はWORMにコミットされないことを確認します。
$ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null $ while true; do date echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null result=$? ls -l /mnt/fsxn/vol_snaplock/date.txt if [ $result -ne 0 ]; then break fi sleep 30 done Mon Apr 15 08:21:00 UTC 2024 -rw-r--r--. 1 root root 58 Apr 15 08:21 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:21:31 UTC 2024 -rw-r--r--. 1 root root 87 Apr 15 08:21 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:22:01 UTC 2024 -rw-r--r--. 1 root root 116 Apr 15 08:22 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:22:31 UTC 2024 -rw-r--r--. 1 root root 145 Apr 15 08:22 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:23:02 UTC 2024 -rw-r--r--. 1 root root 174 Apr 15 08:23 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:23:32 UTC 2024 -rw-r--r--. 1 root root 203 Apr 15 08:23 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:24:03 UTC 2024 -rw-r--r--. 1 root root 232 Apr 15 08:24 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:24:33 UTC 2024 -rw-r--r--. 1 root root 261 Apr 15 08:24 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:25:03 UTC 2024 -rw-r--r--. 1 root root 290 Apr 15 08:25 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:25:34 UTC 2024 -rw-r--r--. 1 root root 319 Apr 15 08:25 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:26:04 UTC 2024 -rw-r--r--. 1 root root 348 Apr 15 08:26 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:26:34 UTC 2024 -rw-r--r--. 1 root root 377 Apr 15 08:26 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:27:05 UTC 2024 -rw-r--r--. 1 root root 406 Apr 15 08:27 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:27:35 UTC 2024 -rw-r--r--. 1 root root 435 Apr 15 08:27 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:28:05 UTC 2024 -rw-r--r--. 1 root root 464 Apr 15 08:28 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:28:36 UTC 2024 -rw-r--r--. 1 root root 493 Apr 15 08:28 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:29:06 UTC 2024 -rw-r--r--. 1 root root 522 Apr 15 08:29 /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:29:36 UTC 2024 -rw-r--r--. 1 root root 551 Apr 15 08:29 /mnt/fsxn/vol_snaplock/date.txt ^C
最後に編集してから、5分経過後に書き込もうとするとエラーになりました。自動コミットされたタイミングで書き込み権限を奪うようです。
$ date Mon Apr 15 08:34:49 UTC 2024 $ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null tee: /mnt/fsxn/vol_snaplock/date.txt: Read-only file system $ ls -l /mnt/fsxn/vol_snaplock/date.txt -r--r--r--. 1 root root 551 Apr 15 08:29 /mnt/fsxn/vol_snaplock/date.txt
ボリュームアペンドモード(VAM)の確認
ボリュームアペンドモード(VAM)の確認をします。
マウント状態ではVAMを有効化することができないことを確認します。
svm::*> volume snaplock modify -volume vol_snaplock -is-volume-append-mode-enabled true Error: command failed: Failed to modify volume append mode because the volume is in the mounted state. Unmount the volume using the "volume unmount -vserver svm -volume vol_snaplock" command, and then try the command again.
アンマウントしても、ボリューム内にファイルやSnapshotが存在している場合はVAMを有効化できないことを確認します。
::*> volume unmount -volume vol_snaplock Queued private job: 28 svm::*> volume snaplock modify -volume vol_snaplock -is-volume-append-mode-enabled true Error: command failed: Failed to modify volume append mode because the volume is not empty. It must not have any data or Snapshot copies.
ボリューム内のファイルを削除した上で、VAMを有効化します。
svm::*> volume mount -volume vol_snaplock -junction-path /vol_snaplock Queued private job: 29 (ここから bash) $ sudo rm -rf /mnt/fsxn/vol_snaplock/* $ ls -l /mnt/fsxn/vol_snaplock/ total 0 (ここからONTAP CLI) ::*> volume unmount -volume vol_snaplock Queued private job: 30 svm::*> volume snaplock modify -volume vol_snaplock -is-volume-append-mode-enabled true svm::*> volume snaplock show -volume vol_snaplock -instance Volume: vol_snaplock SnapLock Type: enterprise Minimum Retention Period: 1 minutes Default Retention Period: 2 minutes Maximum Retention Period: 3 minutes Autocommit Period: 5 minutes Is Volume Append Mode Enabled: true Privileged Delete: - Expiry Time: Mon Apr 15 08:36:36 GMT 2024 ComplianceClock Time: Mon Apr 15 08:40:39 UTC 2024 +00:00 ComplianceClock ID: 1713157822543 ComplianceClock NodeID: 3323134672 ComplianceClock Skew (secs): 0 Litigation Count: 0 Is SnapLock Audit Log Volume: false Unspecified Retention File Count: 0 svm::*> volume mount -volume vol_snaplock -junction-path /vol_snaplock Queued private job: 31
VAMの動作確認のため、空ファイルを作成します。
$ sudo touch /mnt/fsxn/vol_snaplock/date.txt touch: setting times of '/mnt/fsxn/vol_snaplock/date.txt': Read-only file system $ ls -l /mnt/fsxn/vol_snaplock/date.txt -rw-r--r--. 1 root root 0 Apr 15 08:56 /mnt/fsxn/vol_snaplock/date.txt
モードビット上では書き込み権限が付与されていますが、内部的には読み込み専用と判定されたようです。
追記ができることを確認します。
$ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null $ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date.txt > /dev/null $ cat /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:57:22 UTC 2024 Mon Apr 15 08:57:47 UTC 2024
問題なくできますね。
書き込んだ内容を削除をしようとしてみます。
$ sudo sed -i '1d' /mnt/fsxn/vol_snaplock/date.txt sed: cannot remove /mnt/fsxn/vol_snaplock/sedSNMW7M: Read-only file system # 先頭行を削除して保存 $ sudo vi /mnt/fsxn/vol_snaplock/date.txt $ ls -l /mnt/fsxn/vol_snaplock/date.txt -rw-r--r--. 1 root root 58 Apr 15 08:57 /mnt/fsxn/vol_snaplock/date.txt $ cat /mnt/fsxn/vol_snaplock/date.txt Mon Apr 15 08:57:22 UTC 2024 Mon Apr 15 08:57:47 UTC 2024
書き込んだ内容の編集は拒否されました。自動コミット期間前に書き込んだ内容も削除できないので注意したいです。VAMを有効化するのはログファイル専用ボリュームなど適した用途のみ有効にしたいところです。
手動でコミットした後の変更はどうでしょうか。
$ sudo touch /mnt/fsxn/vol_snaplock/date2.txt touch: setting times of '/mnt/fsxn/vol_snaplock/date2.txt': Read-only file system $ ls -l /mnt/fsxn/vol_snaplock/date2.txt -rw-r--r--. 1 root root 0 Apr 15 09:03 /mnt/fsxn/vol_snaplock/date2.txt $ sudo chmod -w /mnt/fsxn/vol_snaplock/date2.txt $ ls -l /mnt/fsxn/vol_snaplock/date2.txt -r--r--r--. 1 root root 0 Apr 15 09:03 /mnt/fsxn/vol_snaplock/date2.txt $ sudo chmod +w /mnt/fsxn/vol_snaplock/date2.txt $ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock/date2.txt > /dev/null $ sudo chmod -w /mnt/fsxn/vol_snaplock/date2.txt $ sudo chmod +w /mnt/fsxn/vol_snaplock/date2.txt chmod: changing permissions of '/mnt/fsxn/vol_snaplock/date2.txt': Read-only file system
ファイルサイズが0バイトの状態で読み取り専用にした場合は保持期間内に書き込み権限の付与ができました。一方、ファイルサイズが0バイト超の場合は、手動コミットが効きました。
コミット後の重複排除
SnapLockと重複排除の相性はどうでしょうか。
コミット後のファイルに対して重複排除を効かせてもデータサイズは減少するのでしょうか。
以下のようにSnapLockはStorage Efficiencyをサポートしていそうです。
ストレージ効率
ONTAP 9.9.1以降SnapLock では、SnapLock およびアグリゲートに対して、データコンパクション、ボリューム間重複排除、適応圧縮などのStorage Efficiency機能がサポートされます。Storage Efficiencyの詳細については、を参照してください "CLI による論理ストレージ管理の概要"。
実際に試してみましょう。
Storage Efficiencyを有効にします。
svm::*> volume efficiency on -volume vol_snaplock Efficiency for volume "vol_snaplock" of Vserver "svm" is enabled. svm::*> volume efficiency show -volume vol_snaplock -fields state, policy, storage-efficiency-mode, inline-compression, inline-dedupe, compression, data-compaction, auto-adaptive-compression-savings, auto-adaptive-compression-existing-volume, using-auto-adaptive-compression vserver volume state policy compression inline-compression storage-efficiency-mode inline-dedupe data-compaction auto-adaptive-compression-savings using-auto-adaptive-compression auto-adaptive-compression-existing-volume ------- ------------ ------- ------ ----------- ------------------ ----------------------- ------------- --------------- --------------------------------- ------------------------------- ----------------------------------------- svm vol_snaplock Enabled auto false false efficient false false true false false
手動でコミットします。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB bs=1M count=1024 dd: closing output file '/mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB': Read-only file system $ sudo cp /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB_2 cp: failed to close '/mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB_2': Read-only file system $ ls -l /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB* -rw-r--r--. 1 root root 1073741824 Apr 15 09:46 /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 1073741824 Apr 15 09:46 /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB_2 $ sudo chmod -w /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB* $ ls -l /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB* -r--r--r--. 1 root root 1073741824 Apr 15 09:46 /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB -r--r--r--. 1 root root 1073741824 Apr 15 09:46 /mnt/fsxn/vol_snaplock/random_pattern_binary_block_1GiB_2
重複排除を実行します。
::*> volume efficiency start -volume vol_snaplock -scan-old-data Warning: This operation scans all of the data in volume "vol_snaplock" of Vserver "svm". It might take a significant time, and degrade performance during that time. Do you want to continue? {y|n}: y The efficiency operation for volume "vol_snaplock" of Vserver "svm" has started. svm::*> volume show -volume vol_snaplock -fields available, filesystem-size, total, used, percent-used, performance-tier-inactive-user-data, performance-tier-inactive-user-data-percent, size, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared,logical-used, logical-used-percent,logical-used-by-afs, logical-available, physical-used, physical-used-percent, tiering-policy, snapshot-policy vserver volume size available filesystem-size total used percent-used snapshot-policy dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared physical-used physical-used-percent logical-used logical-used-percent logical-available logical-used-by-afs tiering-policy performance-tier-inactive-user-data performance-tier-inactive-user-data-percent ------- ------------ ----- --------- --------------- ------- ------- ------------ --------------- ------------------ -------------------------- ------------------- ------------- --------------------- ------------ -------------------- ----------------- ------------------- -------------- ----------------------------------- ------------------------------------------- svm vol_snaplock 128GB 120.7GB 128GB 121.6GB 951.5MB 0% none 807.8MB 46% 807.8MB 951.5MB 1% 1.72GB 1% - 1.72GB none 0B 0% ::*> aggr show-efficiency -instance Name of the Aggregate: aggr1 Node where Aggregate Resides: FsxId0203a077973a5b898-01 Logical Size Used by Volumes, Clones, Snapshot Copies in the Aggregate: 1.71GB Total Physical Used: 946.0MB Total Storage Efficiency Ratio: 1.85:1 Total Data Reduction Logical Used Without Snapshots: 1.71GB Total Data Reduction Physical Used Without Snapshots: 945.4MB Total Data Reduction Efficiency Ratio Without Snapshots: 1.85:1 Total Data Reduction Logical Used without snapshots and flexclones: 1.71GB Total Data Reduction Physical Used without snapshots and flexclones: 945.4MB Total Data Reduction Efficiency Ratio without snapshots and flexclones: 1.85:1 Total Logical Size Used by Volumes, Clones, Snapshot Copies in the FabricPool Performance Tier: 1.72GB Total Physical Used in FabricPool Performance Tier: 1013MB Total FabricPool Performance Tier Storage Efficiency Ratio: 1.74:1 Total Data Reduction Logical Used without snapshots and flexclones in the FabricPool Performance Tier: 1.72GB Total Data Reduction Physical Used without snapshots and flexclones in the FabricPool Performance Tier: 1013MB Total FabricPool Performance Tier Data Reduction Efficiency Ratio without snapshots and flexclones: 1.74:1 Logical Space Used for All Volumes: 1.71GB Physical Space Used for All Volumes: 945.2MB Space Saved by Volume Deduplication: 807.8MB Space Saved by Volume Deduplication and pattern detection: 807.8MB Volume Deduplication Savings ratio: 1.85:1 Space Saved by Volume Compression: 0B Volume Compression Savings ratio: 1.00:1 Space Saved by Inline Zero Pattern Detection: 0B Volume Data Reduction SE Ratio: 1.85:1 Logical Space Used by the Aggregate: 946.0MB Physical Space Used by the Aggregate: 946.0MB Space Saved by Aggregate Data Reduction: 0B Aggregate Data Reduction SE Ratio: 1.00:1 Logical Size Used by Snapshot Copies: 1.76MB Physical Size Used by Snapshot Copies: 596KB Snapshot Volume Data Reduction Ratio: 3.02:1 Logical Size Used by FlexClone Volumes: 0B Physical Sized Used by FlexClone Volumes: 0B FlexClone Volume Data Reduction Ratio: 1.00:1 Snapshot And FlexClone Volume Data Reduction SE Ratio: 3.02:1 Number of Volumes Offline: 0 Number of SIS Disabled Volumes: 1 Number of SIS Change Log Disabled Volumes: 1
重複排除によってボリュームの物理使用量が減少していますね。また、aggregateの物理使用量も書き込んだデータサイズ1GB未満です。
SnapLockでWORMにコミットされた状態でも重複排除は効くようですね。
コミット後の圧縮
コミット後の圧縮はどうでしょうか。試してみます。
Inactive data compressionを有効化します。
svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance Volume: vol_snaplock Vserver: svm Is Enabled: false Scan Mode: - Progress: IDLE Status: SUCCESS Compression Algorithm: lzopro Failure Reason: - Total Blocks: - Total blocks Processed: - Percentage: - Phase1 L1s Processed: - Phase1 Lns Skipped: - Phase2 Total Blocks: - Phase2 Blocks Processed: - Number of Cold Blocks Encountered: 0 Number of Repacked Blocks: 0 Number of Compression Done Blocks: 0 Number of Vol-Overwrites: 0 Time since Last Inactive Data Compression Scan started(sec): 0 Time since Last Inactive Data Compression Scan ended(sec): 0 Time since Last Successful Inactive Data Compression Scan started(sec): - Time since Last Successful Inactive Data Compression Scan ended(sec): 0 Average time for Cold Data Compression(sec): 0 Tuning Enabled: true Threshold: 14 Threshold Upper Limit: 21 Threshold Lower Limit: 14 Client Read history window: 14 Incompressible Data Percentage: 0% svm::*> volume efficiency modify -volume vol_snaplock -compression true svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance Volume: vol_snaplock Vserver: svm Is Enabled: true Scan Mode: - Progress: IDLE Status: SUCCESS Compression Algorithm: lzopro Failure Reason: - Total Blocks: - Total blocks Processed: - Percentage: - Phase1 L1s Processed: - Phase1 Lns Skipped: - Phase2 Total Blocks: - Phase2 Blocks Processed: - Number of Cold Blocks Encountered: 0 Number of Repacked Blocks: 0 Number of Compression Done Blocks: 0 Number of Vol-Overwrites: 0 Time since Last Inactive Data Compression Scan started(sec): 0 Time since Last Inactive Data Compression Scan ended(sec): 0 Time since Last Successful Inactive Data Compression Scan started(sec): - Time since Last Successful Inactive Data Compression Scan ended(sec): 0 Average time for Cold Data Compression(sec): 0 Tuning Enabled: true Threshold: 14 Threshold Upper Limit: 21 Threshold Lower Limit: 14 Client Read history window: 14 Incompressible Data Percentage: 0%
圧縮が効きやすいファイルを作成して、手動でコミットします。
$ yes \ $(base64 /dev/urandom -w 0 \ | head -c 1K ) \ | tr -d '\n' \ | sudo dd of=/mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB bs=4M count=4096 iflag=fullblock dd: closing output file '/mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB': Read-only file system $ ls -lh /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB -rw-r--r--. 1 root root 16G Apr 15 09:58 /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB $ sudo chmod -w /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB $ ls -lh /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB -r--r--r--. 1 root root 16G Apr 15 09:58 /mnt/fsxn/vol_snaplock/1KB_random_pattern_text_block_16GiB
Inactive data compressionを実行します。
svm::*> volume efficiency inactive-data-compression start -volume vol_snaplock -inactive-days 0 Inactive data compression scan started on volume "vol_snaplock" in Vserver "svm" svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance Volume: vol_snaplock Vserver: svm Is Enabled: true Scan Mode: default Progress: RUNNING Status: SUCCESS Compression Algorithm: lzopro Failure Reason: - Total Blocks: - Total blocks Processed: - Percentage: 0% Phase1 L1s Processed: 4974 Phase1 Lns Skipped: L1: 0 L2: 0 L3: 0 L4: 0 L5: 0 L6: 0 L7: 0 Phase2 Total Blocks: 0 Phase2 Blocks Processed: 0 Number of Cold Blocks Encountered: 1001288 Number of Repacked Blocks: 0 Number of Compression Done Blocks: 726256 Number of Vol-Overwrites: 0 Time since Last Inactive Data Compression Scan started(sec): 0 Time since Last Inactive Data Compression Scan ended(sec): 0 Time since Last Successful Inactive Data Compression Scan started(sec): - Time since Last Successful Inactive Data Compression Scan ended(sec): 0 Average time for Cold Data Compression(sec): 0 Tuning Enabled: true Threshold: 14 Threshold Upper Limit: 21 Threshold Lower Limit: 14 Client Read history window: 14 Incompressible Data Percentage: 0% svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance Volume: vol_snaplock Vserver: svm Is Enabled: true Scan Mode: default Progress: RUNNING Status: SUCCESS Compression Algorithm: lzopro Failure Reason: - Total Blocks: - Total blocks Processed: - Percentage: 43% Phase1 L1s Processed: 17121 Phase1 Lns Skipped: L1: 0 L2: 0 L3: 0 L4: 0 L5: 0 L6: 0 L7: 0 Phase2 Total Blocks: 11004608 Phase2 Blocks Processed: 4700241 Number of Cold Blocks Encountered: 4108584 Number of Repacked Blocks: 0 Number of Compression Done Blocks: 3820576 Number of Vol-Overwrites: 0 Time since Last Inactive Data Compression Scan started(sec): 0 Time since Last Inactive Data Compression Scan ended(sec): 0 Time since Last Successful Inactive Data Compression Scan started(sec): - Time since Last Successful Inactive Data Compression Scan ended(sec): 0 Average time for Cold Data Compression(sec): 0 Tuning Enabled: true Threshold: 14 Threshold Upper Limit: 21 Threshold Lower Limit: 14 Client Read history window: 14 Incompressible Data Percentage: 0% svm::*> volume efficiency inactive-data-compression show -volume vol_snaplock -instance Volume: vol_snaplock Vserver: svm Is Enabled: true Scan Mode: - Progress: IDLE Status: SUCCESS Compression Algorithm: lzopro Failure Reason: - Total Blocks: - Total blocks Processed: - Percentage: - Phase1 L1s Processed: - Phase1 Lns Skipped: - Phase2 Total Blocks: - Phase2 Blocks Processed: - Number of Cold Blocks Encountered: 4108760 Number of Repacked Blocks: 0 Number of Compression Done Blocks: 3820752 Number of Vol-Overwrites: 0 Time since Last Inactive Data Compression Scan started(sec): 21 Time since Last Inactive Data Compression Scan ended(sec): 0 Time since Last Successful Inactive Data Compression Scan started(sec): - Time since Last Successful Inactive Data Compression Scan ended(sec): 0 Average time for Cold Data Compression(sec): 21 Tuning Enabled: true Threshold: 14 Threshold Upper Limit: 21 Threshold Lower Limit: 14 Client Read history window: 14 Incompressible Data Percentage: 5%
圧縮したデータブロックが3,820,752なので、3,820,752 * 4 / 1,024 / 1,024 = 14.57GiB
分のデータを圧縮していそうですね。
Inactive data compression実行完了後のaggregateの物理使用量を確認します。
::*> aggr show-efficiency -instance Name of the Aggregate: aggr1 Node where Aggregate Resides: FsxId0203a077973a5b898-01 Logical Size Used by Volumes, Clones, Snapshot Copies in the Aggregate: 16.32GB Total Physical Used: 7.33GB Total Storage Efficiency Ratio: 2.23:1 Total Data Reduction Logical Used Without Snapshots: 16.32GB Total Data Reduction Physical Used Without Snapshots: 7.33GB Total Data Reduction Efficiency Ratio Without Snapshots: 2.23:1 Total Data Reduction Logical Used without snapshots and flexclones: 16.32GB Total Data Reduction Physical Used without snapshots and flexclones: 7.33GB Total Data Reduction Efficiency Ratio without snapshots and flexclones: 2.23:1 Total Logical Size Used by Volumes, Clones, Snapshot Copies in the FabricPool Performance Tier: 16.60GB Total Physical Used in FabricPool Performance Tier: 7.72GB Total FabricPool Performance Tier Storage Efficiency Ratio: 2.15:1 Total Data Reduction Logical Used without snapshots and flexclones in the FabricPool Performance Tier: 16.60GB Total Data Reduction Physical Used without snapshots and flexclones in the FabricPool Performance Tier: 7.72GB Total FabricPool Performance Tier Data Reduction Efficiency Ratio without snapshots and flexclones: 2.15:1 Logical Space Used for All Volumes: 16.32GB Physical Space Used for All Volumes: 15.46GB Space Saved by Volume Deduplication: 875.1MB Space Saved by Volume Deduplication and pattern detection: 875.1MB Volume Deduplication Savings ratio: 1.06:1 Space Saved by Volume Compression: 0B Volume Compression Savings ratio: 1.00:1 Space Saved by Inline Zero Pattern Detection: 0B Volume Data Reduction SE Ratio: 1.06:1 Logical Space Used by the Aggregate: 21.28GB Physical Space Used by the Aggregate: 7.33GB Space Saved by Aggregate Data Reduction: 13.95GB Aggregate Data Reduction SE Ratio: 2.90:1 Logical Size Used by Snapshot Copies: 2.37MB Physical Size Used by Snapshot Copies: 736KB Snapshot Volume Data Reduction Ratio: 3.29:1 Logical Size Used by FlexClone Volumes: 0B Physical Sized Used by FlexClone Volumes: 0B FlexClone Volume Data Reduction Ratio: 1.00:1 Snapshot And FlexClone Volume Data Reduction SE Ratio: 3.29:1 Number of Volumes Offline: 0 Number of SIS Disabled Volumes: 1 Number of SIS Change Log Disabled Volumes: 1
7.33GBと書き込んだ量よりも少ないですね。
一晩寝かせると、5.16GBとさらに少なくなっていました。SnapLockでWORMにコミットされた状態でも圧縮は効くようですね。
::*> aggr show-efficiency -instance Name of the Aggregate: aggr1 Node where Aggregate Resides: FsxId0203a077973a5b898-01 Logical Size Used by Volumes, Clones, Snapshot Copies in the Aggregate: 16.32GB Total Physical Used: 5.16GB Total Storage Efficiency Ratio: 3.16:1 Total Data Reduction Logical Used Without Snapshots: 16.32GB Total Data Reduction Physical Used Without Snapshots: 5.16GB Total Data Reduction Efficiency Ratio Without Snapshots: 3.16:1 Total Data Reduction Logical Used without snapshots and flexclones: 16.32GB Total Data Reduction Physical Used without snapshots and flexclones: 5.16GB Total Data Reduction Efficiency Ratio without snapshots and flexclones: 3.16:1 Total Logical Size Used by Volumes, Clones, Snapshot Copies in the FabricPool Performance Tier: 16.60GB Total Physical Used in FabricPool Performance Tier: 5.56GB Total FabricPool Performance Tier Storage Efficiency Ratio: 2.99:1 Total Data Reduction Logical Used without snapshots and flexclones in the FabricPool Performance Tier: 16.60GB Total Data Reduction Physical Used without snapshots and flexclones in the FabricPool Performance Tier: 5.56GB Total FabricPool Performance Tier Data Reduction Efficiency Ratio without snapshots and flexclones: 2.99:1 Logical Space Used for All Volumes: 16.32GB Physical Space Used for All Volumes: 15.47GB Space Saved by Volume Deduplication: 875.1MB Space Saved by Volume Deduplication and pattern detection: 875.1MB Volume Deduplication Savings ratio: 1.06:1 Space Saved by Volume Compression: 0B Volume Compression Savings ratio: 1.00:1 Space Saved by Inline Zero Pattern Detection: 0B Volume Data Reduction SE Ratio: 1.06:1 Logical Space Used by the Aggregate: 19.11GB Physical Space Used by the Aggregate: 5.16GB Space Saved by Aggregate Data Reduction: 13.95GB Aggregate Data Reduction SE Ratio: 3.70:1 Logical Size Used by Snapshot Copies: 2.37MB Physical Size Used by Snapshot Copies: 736KB Snapshot Volume Data Reduction Ratio: 3.29:1 Logical Size Used by FlexClone Volumes: 0B Physical Sized Used by FlexClone Volumes: 0B FlexClone Volume Data Reduction Ratio: 1.00:1 Snapshot And FlexClone Volume Data Reduction SE Ratio: 3.29:1 Number of Volumes Offline: 0 Number of SIS Disabled Volumes: 1 Number of SIS Change Log Disabled Volumes: 1
コミット後のSnapMirror
コミット後のデータをSnapMirrorできるか確認します。
VAMが有効だったり、自動コミットが有効だと検証しづらいので新規にボリュームを用意します。
::*> volume create -vserver svm -volume vol_snaplock2 -aggregate aggr1 -state online -type RW -security-style unix -size 64GB -tiering-policy none -snapshot-policy none -junction-path /vol_snaplock2 -language utf8mb4 -snaplock-type enterprise [Job 65] Job succeeded: Successful ::*> volume show -volume vol_snaplock2 -fields available, filesystem-size, total, used, percent-used, performance-tier-inactive-user-data, performance-tier-inactive-user-data-percent, size, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared,logical-used, logical-used-percent,logical-used-by-afs, logical-available, physical-used, physical-used-percent, tiering-policy, snapshot-policy vserver volume size available filesystem-size total used percent-used snapshot-policy dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared physical-used physical-used-percent logical-used logical-used-percent logical-available logical-used-by-afs tiering-policy performance-tier-inactive-user-data performance-tier-inactive-user-data-percent ------- ------------- ---- --------- --------------- ------- ----- ------------ --------------- ------------------ -------------------------- ------------------- ------------- --------------------- ------------ -------------------- ----------------- ------------------- -------------- ----------------------------------- ------------------------------------------- svm vol_snaplock2 64GB 60.80GB 64GB 60.80GB 304KB 0% none 0B 0% 0B 304KB 0% 304KB 0% - 304KB none - - svm::*> volume snaplock show -volume vol_snaplock2 -instance Volume: vol_snaplock2 SnapLock Type: enterprise Minimum Retention Period: 0 years Default Retention Period: min Maximum Retention Period: 30 years Autocommit Period: none Is Volume Append Mode Enabled: false Privileged Delete: - Expiry Time: none ComplianceClock Time: Tue Apr 16 04:39:56 UTC 2024 +00:00 ComplianceClock ID: 1713157822543 ComplianceClock NodeID: 3323134672 ComplianceClock Skew (secs): 0 Litigation Count: 0 Is SnapLock Audit Log Volume: false Unspecified Retention File Count: 0 svm::*> volume snaplock modify -volume vol_snaplock2 -minimum-retention-period "1 minutes" -default-retention-period "2 minutes" -maximum-retention-period "3 minutes" svm::*> volume snaplock show -volume vol_snaplock2 -instance Volume: vol_snaplock2 SnapLock Type: enterprise Minimum Retention Period: 1 minutes Default Retention Period: 2 minutes Maximum Retention Period: 3 minutes Autocommit Period: none Is Volume Append Mode Enabled: false Privileged Delete: - Expiry Time: none ComplianceClock Time: Tue Apr 16 04:43:13 UTC 2024 +00:00 ComplianceClock ID: 1713157822543 ComplianceClock NodeID: 3323134672 ComplianceClock Skew (secs): 0 Litigation Count: 0 Is SnapLock Audit Log Volume: false Unspecified Retention File Count: 0
用意したボリュームに書き込みます。
$ sudo mkdir -p /mnt/fsxn/vol_snaplock2 $ sudo mount -t nfs svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com:/vol_snaplock2 /mnt/fsxn/vol_snaplock2 $ echo $(date) | sudo tee -a /mnt/fsxn/vol_snaplock2/date.txt > /dev/null $ cat /mnt/fsxn/vol_snaplock2/date.txt Tue Apr 16 04:53:49 UTC 2024
SnapMirrorの転送先ボリュームを作成して、SnapMirror relastionshipを作成します。
::*> volume create -vserver svm -volume vol_snaplock2_dst -aggregate aggr1 -state online -type DP -size 4GB -tiering-policy none -autosize-mode grow Warning: The volume is being created on a SnapLock aggregate, but the "snaplock-type" has not been specified. The volume will be created as a non-SnapLock volume. Do you want to continue? {y|n}: y [Job 70] Job succeeded: Successful ::*> volume show -volume vol_snaplock2_dst -fields snaplock-type vserver volume snaplock-type ------- ----------------- ------------- svm vol_snaplock2_dst non-snaplock
SnapMirror relastionshipに初期化をします。
::*> snapmirror initialize -destination-path svm:vol_snaplock2_dst Operation is queued: snapmirror initialize of destination "svm:vol_snaplock2_dst". ::*> ::*> snapmirror show Progress Source Destination Mirror Relationship Total Last Path Type Path State Status Progress Healthy Updated ----------- ---- ------------ ------- -------------- --------- ------- -------- svm:vol_snaplock2 XDP svm:vol_snaplock2_dst Uninitialized Idle - false - ::*> snapmirror show-history Destination Source Start End Path Path Operation Time Time Result ----------- ----------- --------- ----------- ----------- ------- svm:vol_snaplock2_dst svm:vol_snaplock2 initialize 4/16/2024 05:11:32 4/16/2024 05:11:32 failure svm:vol_snaplock2_dst svm:vol_snaplock2 create 4/16/2024 05:10:50 4/16/2024 05:10:50 success 2 entries were displayed. ::*> snapmirror show-history -instance Destination Path: svm:vol_snaplock2_dst Source Path: svm:vol_snaplock2 Relationship ID: b1043ac1-fbaf-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: initialize Operation ID: c9fb2831-fbaf-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:11:32 End Time: 4/16/2024 05:11:32 Result: failure Transfer Size: - Additional Information: XDP relationship not supported between volumes with different SnapLock types: the SnapLock type of source volume is "enterprise" and the SnapLock type of destination volume is "non-snaplock". Destination Path: svm:vol_snaplock2_dst Source Path: svm:vol_snaplock2 Relationship ID: b1043ac1-fbaf-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: create Operation ID: b1043a54-fbaf-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:10:50 End Time: 4/16/2024 05:10:50 Result: success Transfer Size: - Additional Information: - 2 entries were displayed.
どうやら転送元がSnapLockボリュームの場合、転送先ボリュームは転送元と同じリテンションモードである必要があるようです。
ドキュメントをよくよく見ると、しっかり書いてありました。
SnapMirror を使用すると、ディザスタリカバリなどの目的で、地理的に離れた別の場所に WORM ファイルをレプリケートできます。ソースボリュームとデスティネーションボリュームの両方が SnapLock 用に設定されていて、両方のボリュームの SnapLock モードが Compliance または Enterprise である必要があります。ボリュームとファイルの主要な SnapLock プロパティがすべてレプリケートされます。
転送元ボリュームと同じくEnterpriseモードのSnapLockの設定をした転送先ボリュームを用意して、SnapMirrorします。作成後にSnapLockのリテンションモードを変更することはできないようなので注意しましょう。
::*> volume create -vserver svm -volume vol_snaplock2_dst2 -aggregate aggr1 -state online -type DP -size 4GB -tiering-policy none -autosize-mode grow -snaplock-type enterprise [Job 72] Job succeeded: Successful ::*> volume show -volume vol_snaplock2_dst2 -fields snaplock-type vserver volume snaplock-type ------- ------------------ ------------- svm vol_snaplock2_dst2 enterprise ::*> snapmirror create -source-path svm:vol_snaplock2 -destination-path svm:vol_snaplock2_dst2 -policy MirrorAllSnapshots Operation succeeded: snapmirror create for the relationship with destination "svm:vol_snaplock2_dst2". ::*> snapmirror initialize -destination-path svm:vol_snaplock2_dst2 Operation is queued: snapmirror initialize of destination "svm:vol_snaplock2_dst2". ::*> snapmirror show Progress Source Destination Mirror Relationship Total Last Path Type Path State Status Progress Healthy Updated ----------- ---- ------------ ------- -------------- --------- ------- -------- svm:vol_snaplock2 XDP svm:vol_snaplock2_dst Uninitialized Idle - false - svm:vol_snaplock2_dst2 Snapmirrored Finalizing 13.85KB true 04/16 05:15:28 2 entries were displayed. ::*> snapmirror show Progress Source Destination Mirror Relationship Total Last Path Type Path State Status Progress Healthy Updated ----------- ---- ------------ ------- -------------- --------- ------- -------- svm:vol_snaplock2 XDP svm:vol_snaplock2_dst Uninitialized Idle - false - svm:vol_snaplock2_dst2 Snapmirrored Idle - true - 2 entries were displayed. ::*> snapmirror show-history -destination-path svm:vol_snaplock2_dst2 -instance Destination Path: svm:vol_snaplock2_dst2 Source Path: svm:vol_snaplock2 Relationship ID: 35c53c26-fbb0-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: scheduled-update Operation ID: 246dc3cc-12f4-4d12-ae49-ae920599f6d4 Start Time: 4/16/2024 05:15:25 End Time: 4/16/2024 05:15:29 Result: success Transfer Size: 13.85KB Additional Information: - Destination Path: svm:vol_snaplock2_dst2 Source Path: svm:vol_snaplock2 Relationship ID: 35c53c26-fbb0-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: initialize Operation ID: 5450f18b-fbb0-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:15:25 End Time: 4/16/2024 05:15:27 Result: success Transfer Size: 21.12KB Additional Information: - Destination Path: svm:vol_snaplock2_dst2 Source Path: svm:vol_snaplock2 Relationship ID: 35c53c26-fbb0-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: create Operation ID: 35c53bb6-fbb0-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:14:32 End Time: 4/16/2024 05:14:33 Result: success Transfer Size: - Additional Information: - 3 entries were displayed.
正しく転送できました。
また、転送先ボリュームのSnapLockの設定を確認すると、転送元と同じ設定がされていました。良きように転送してくれるようです。
svm::*> volume snaplock show -volume vol_snaplock2_dst2 -instance Volume: vol_snaplock2_dst2 SnapLock Type: enterprise Minimum Retention Period: 1 minutes Default Retention Period: 2 minutes Maximum Retention Period: 3 minutes Autocommit Period: none Is Volume Append Mode Enabled: false Privileged Delete: - Expiry Time: Tue Apr 16 05:17:04 GMT 2024 ComplianceClock Time: Tue Apr 16 05:18:57 UTC 2024 +00:00 ComplianceClock ID: 1713157822543 ComplianceClock NodeID: 3323134672 ComplianceClock Skew (secs): 3 Litigation Count: 0 Is SnapLock Audit Log Volume: false Unspecified Retention File Count: 0
SnapMirrorの転送先がSnapLockボリューム
続いて、SnapMirrorの転送先がSnapLockボリュームの場合を確認します。
以下のようにSnapLockボリュームでないボリュームを用意しました。
::*> volume show -volume vol1 -fields snaplock-type vserver volume snaplock-type ------- ------ ------------- svm vol1 non-snaplock
転送先のSnapLockボリュームを作成します。
::*> volume create -vserver svm -volume vol_dst -aggregate aggr1 -state online -type DP -size 4GB -tiering-policy none -autosize-mode grow -snaplock-type enterprise[Job 74] Job succeeded: Successful ::*> volume snaplock show -volume vol_dst -instance Vserver: svm Volume: vol_dst SnapLock Type: enterprise Minimum Retention Period: 0 years Default Retention Period: min Maximum Retention Period: 30 years Autocommit Period: none Is Volume Append Mode Enabled: false Privileged Delete: - Expiry Time: none ComplianceClock Time: Tue Apr 16 05:30:40 UTC 2024 +00:00 ComplianceClock ID: 1713157822543 ComplianceClock NodeID: 3323134672 ComplianceClock Skew (secs): 0 Litigation Count: 0 Is SnapLock Audit Log Volume: false Unspecified Retention File Count: 0 ::*> volume snaplock modify -volume vol_dst -minimum-retention-period "1 minutes" -default-retention-period "2 minutes" -maximum-retention-period "3 minutes" ::*> volume snaplock show -volume vol_dst -instance Vserver: svm Volume: vol_dst SnapLock Type: enterprise Minimum Retention Period: 1 minutes Default Retention Period: 2 minutes Maximum Retention Period: 3 minutes Autocommit Period: none Is Volume Append Mode Enabled: false Privileged Delete: - Expiry Time: none ComplianceClock Time: Tue Apr 16 05:31:10 UTC 2024 +00:00 ComplianceClock ID: 1713157822543 ComplianceClock NodeID: 3323134672 ComplianceClock Skew (secs): 0 Litigation Count: 0 Is SnapLock Audit Log Volume: false Unspecified Retention File Count: 0
SnapMirror relationshipを初期化します。
::*> snapmirror create -source-path svm:vol1 -destination-path svm:vol_dst -policy MirrorAllSnapshots Operation succeeded: snapmirror create for the relationship with destination "svm:vol_dst". ::*> snapmirror initialize -destination-path svm:vol_dst Operation is queued: snapmirror initialize of destination "svm:vol_dst". ::*> snapmirror show Progress Source Destination Mirror Relationship Total Last Path Type Path State Status Progress Healthy Updated ----------- ---- ------------ ------- -------------- --------- ------- -------- svm:vol1 XDP svm:vol_dst Uninitialized Idle - false - svm:vol_snaplock2 XDP svm:vol_snaplock2_dst Uninitialized Idle - false - svm:vol_snaplock2_dst2 Snapmirrored Idle - true - 3 entries were displayed. ::*> snapmirror show-history -destination-path svm:vol_dst -instance Destination Path: svm:vol_dst Source Path: svm:vol1 Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: initialize Operation ID: ac30a859-fbb2-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:32:11 End Time: 4/16/2024 05:32:11 Result: failure Transfer Size: - Additional Information: Policy is not of type "vault" for SnapMirror relationship of type "XDP" on SnapLock destination volume "svm:vol_dst". Destination Path: svm:vol_dst Source Path: svm:vol1 Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: create Operation ID: a38f568f-fbb2-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:31:56 End Time: 4/16/2024 05:31:56 Result: success Transfer Size: - Additional Information: - 2 entries were displayed.
SnapMirror policyのタイプがvault
でなければダメなようです。
mirror-vault
の場合はどうでしょうか。SnapMirror policyをMirrorAndVault
に変更して再トライします。
::*> snapmirror modify -destination-path svm:vol_dst -policy MirrorAndVault Operation succeeded: snapmirror modify for the relationship with destination "svm:vol_dst". ::*> snapmirror initialize -destination-path svm:vol_dst Operation is queued: snapmirror initialize of destination "svm:vol_dst". ::*> snapmirror show-history -destination-path svm:vol_dst -instance Destination Path: svm:vol_dst Source Path: svm:vol1 Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: initialize Operation ID: 0332bd6a-fbb3-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:34:37 End Time: 4/16/2024 05:34:37 Result: failure Transfer Size: - Additional Information: Policy is not of type "vault" for SnapMirror relationship of type "XDP" on SnapLock destination volume "svm:vol_dst". Destination Path: svm:vol_dst Source Path: - Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: modify Operation ID: fedf220e-fbb2-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:34:29 End Time: 4/16/2024 05:34:29 Result: success Transfer Size: - Additional Information: - Destination Path: svm:vol_dst Source Path: svm:vol1 Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: initialize Operation ID: ac30a859-fbb2-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:32:11 End Time: 4/16/2024 05:32:11 Result: failure Transfer Size: - Additional Information: Policy is not of type "vault" for SnapMirror relationship of type "XDP" on SnapLock destination volume "svm:vol_dst". Destination Path: svm:vol_dst Source Path: svm:vol1 Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: create Operation ID: a38f568f-fbb2-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:31:56 End Time: 4/16/2024 05:31:56 Result: success Transfer Size: - Additional Information: - 4 entries were displayed.
エラー内容は変わりありません。vault
を含むではなく、vault
でなければならないようですね。
vault
であるXDPDefault
にSnapMirror policyを変更して再チャレンジします。
::*> snapmirror policy show -fields type vserver policy type ---------------------- ------------ ------------ FsxId0203a077973a5b898 Asynchronous mirror-vault FsxId0203a077973a5b898 AutomatedFailOver automated-failover FsxId0203a077973a5b898 CloudBackupDefault vault FsxId0203a077973a5b898 Continuous continuous FsxId0203a077973a5b898 DPDefault async-mirror FsxId0203a077973a5b898 DailyBackup vault FsxId0203a077973a5b898 Migrate migrate FsxId0203a077973a5b898 MirrorAllSnapshots async-mirror FsxId0203a077973a5b898 MirrorAllSnapshotsDiscardNetwork async-mirror FsxId0203a077973a5b898 MirrorAndVault mirror-vault FsxId0203a077973a5b898 MirrorAndVaultDiscardNetwork mirror-vault FsxId0203a077973a5b898 MirrorLatest async-mirror FsxId0203a077973a5b898 SnapCenterSync sync-mirror FsxId0203a077973a5b898 StrictSync strict-sync-mirror FsxId0203a077973a5b898 Sync sync-mirror FsxId0203a077973a5b898 Unified7year mirror-vault FsxId0203a077973a5b898 XDPDefault vault 17 entries were displayed. ::*> snapmirror policy show -type vault Vserver Policy Policy Number Transfer Name Name Type Of Rules Tries Priority Comment ------- ------------------ ------ -------- ----- -------- ---------- FsxId0203a077973a5b898 CloudBackupDefault vault 1 8 normal Vault policy with daily rule. SnapMirror Label: daily Keep: 7 Total Keep: 7 FsxId0203a077973a5b898 DailyBackup vault 1 8 normal Vault policy with a daily rule and a daily transfer schedule. SnapMirror Label: daily Keep: 7 Total Keep: 7 FsxId0203a077973a5b898 XDPDefault vault 2 8 normal Vault policy with daily and weekly rules. SnapMirror Label: daily Keep: 7 weekly 52 Total Keep: 59 3 entries were displayed. ::*> snapmirror modify -destination-path svm:vol_dst -policy XDPDefault Operation succeeded: snapmirror modify for the relationship with destination "svm:vol_dst". ::*> snapmirror initialize -destination-path svm:vol_dst Operation is queued: snapmirror initialize of destination "svm:vol_dst". ::*> snapmirror show-history -destination-path svm:vol_dst -instance -max-rows-per-relationship 1 Destination Path: svm:vol_dst Source Path: svm:vol1 Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: initialize Operation ID: 51303b10-fbb3-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:36:48 End Time: 4/16/2024 05:36:50 Result: success Transfer Size: 17.82KB Additional Information: -
今度は正常に転送が完了しました。
転送されたSnapshotを確認すると、まだSnapLockの保持期間を示すsnaplock-expiry-time
は指定されていません。
::*> snapshot show -volume vol1, vol_dst -fields snaplock-expiry-time vserver volume snapshot snaplock-expiry-time ------- ------ ---------------------------------------------------------------------------- -------------------- svm vol1 snapmirror.be28f0c9-fae6-11ee-9f88-c748fac02eac_2151788187.2024-04-16_053648 - svm vol_dst snapmirror.be28f0c9-fae6-11ee-9f88-c748fac02eac_2151788187.2024-04-16_053648 - 2 entries were displayed.
差分転送してみましょう。
転送元ボリュームに適当にファイルを作成します。
$ sudo mount -t nfs svm-090459f1740b295e5.fs-0203a077973a5b898.fsx.us-east-1.amazonaws.com:/vol1 /mnt/fsxn/vol1 $ echo $(date) | sudo tee -a /mnt/fsxn/vol1/date.txt > /dev/null $ ls -l /mnt/fsxn/vol1/date.txt -rw-r--r--. 1 root root 29 Apr 16 05:44 /mnt/fsxn/vol1/date.txt $ cat /mnt/fsxn/vol1/date.txt Tue Apr 16 05:44:34 UTC 2024
XDPDefault
はsm_created
がありません。つまりは、SnapMirror転送時にSnapshotを取得してくれません。
SnapMirror policyを確認するとdaily
とweekly
というラベルが付与されているSnapshotは転送してくれそうです。
今回はdaily
ラベルが付与されたSnapshotを手動で作成します。
::*> snapshot create -vserver svm -volume vol1 -snapshot daily.snaplock-test -snapmirror-label daily ::*> snapshot show -volume vol1, vol_dst -fields snaplock-expiry-time, snapmirror-label vserver volume snapshot snapmirror-label snaplock-expiry-time ------- ------ ---------------------------------------------------------------------------- ---------------- -------------------- svm vol1 snapmirror.be28f0c9-fae6-11ee-9f88-c748fac02eac_2151788187.2024-04-16_053648 - - svm vol1 daily.snaplock-test daily - svm vol_dst snapmirror.be28f0c9-fae6-11ee-9f88-c748fac02eac_2151788187.2024-04-16_053648 - - 3 entries were displayed.
Snapshot作成後、SnapMirrorの差分同期をします。
::*> snapmirror update -destination-path svm:vol_dst Operation is queued: snapmirror update of destination "svm:vol_dst". ::*> snapmirror show Progress Source Destination Mirror Relationship Total Last Path Type Path State Status Progress Healthy Updated ----------- ---- ------------ ------- -------------- --------- ------- -------- svm:vol1 XDP svm:vol_dst Snapmirrored Idle - true - svm:vol_snaplock2 XDP svm:vol_snaplock2_dst Uninitialized Idle - false - svm:vol_snaplock2_dst2 Snapmirrored Idle - true - 3 entries were displayed. ::*> snapmirror show-history -destination-path svm:vol_dst -instance -max-rows-per-relationship 1 Destination Path: svm:vol_dst Source Path: svm:vol1 Relationship ID: a38f5701-fbb2-11ee-9f88-c748fac02eac Relationship Group Type: none Operation: manual-update Operation ID: beda1ea9-fbb4-11ee-9f88-c748fac02eac Start Time: 4/16/2024 05:47:00 End Time: 4/16/2024 05:47:02 Result: success Transfer Size: 13.85KB Additional Information: - ::*> snapshot show -volume vol1, vol_dst -fields snaplock-expiry-time, expiry-time, snapmirror-label vserver volume snapshot snapmirror-label expiry-time snaplock-expiry-time ------- ------ ------------------- ---------------- ----------- -------------------- svm vol1 daily.snaplock-test daily - - svm vol_dst daily.snaplock-test daily - 4/16/2024 05:49:01 +00:00 2 entries were displayed.
転送先ボリュームに転送されたSnapshotにsnaplock-expiry-time
が設定されました。設定された時刻はSnapMirrorによって転送された時間 + SnapLockのデフォルト保持期間2分でした。
ボリュームのSnapLockの解除
できません。
volume modifyには、既存のボリュームのSnapLockモードを変更する方法は紹介されていません。
SnapLockボリュームから通常のボリュームに戻したい場合はDataSyncやrsync、Robocopyを使ってファイルを転送してあげましょう。
一方、非SnapLockボリュームからSnapLockボリュームへの変換についてはSnapMirrorで代替できると考えます。
SnapMirrorの転送先ボリュームでSnapLockをかける運用から始めよう
Amazon FSx for NetApp ONTAPでSnapLockによるWORMを試してみました。
コンプライアンス遵守や改ざん、誤削除対策としてWORM機能は非常に有用です。
ただし、使い方を間違えると数年削除できないファイルシステムを作成してしまう可能性があります。SnapLockを有効化する際は慎重に行いましょう。
個人的にはSnapLockを導入する場合、SnapMirrorの転送先ボリュームでSnapLockをかける運用から始めるのが良いと考えます。
オリジナルのボリュームにSnapLockをかけてしまうと「どうしても編集したいけど、編集できない」と運用が回らない可能性があります。SnapMirrorの転送先であれば元々読み取り専用ボリュームなので、そのような事象は回避できると考えます。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!